package com.hk.crm.settings.web.controller;

import com.hk.crm.settings.domain.User;
import com.hk.crm.settings.service.UserService;
import com.hk.crm.settings.service.impl.UserServiceImpl;
import com.hk.crm.utils.MD5Util;
import com.hk.crm.utils.PrintJson;
import com.hk.crm.utils.ServiceFactory;
import com.hk.crm.utils.UUIDUtil;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class UserController extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String path=req.getServletPath();
        if ("/settings/user/login.do".equals(path)){
            login(req,resp);
        }else if ("/settings/user/xx.do".equals(path)){

        }
    }

    private void login(HttpServletRequest req, HttpServletResponse resp) {
        String loginAct=req.getParameter("loginAct");
        String loginPwd=req.getParameter("loginPwd");
//        将明文转换为秘文
        loginPwd=MD5Util.getMD5(loginPwd);
//        接收ip地址
        String ip=req.getRemoteAddr();
//        System.out.println("===========ip="+ip);
        //        获取service的代理类对象
        UserService proxyService= (UserService) ServiceFactory.getService(new UserServiceImpl());
        try {
//            如果业务层对象调用login，在业务层抛了个异常，往catch中来，捕捉
            User user= proxyService.login(loginAct,loginPwd,ip);
//            如果能走到这，说明验证正确的，直接将user保存到session中，不用担心user会是空被塞进去
//            因为会抛异常 直接终止了后面的代码
            req.getSession().setAttribute("user", user);

//            执行到此处表示登录成功
//            应该给前端返回个"success"：true
            PrintJson.printJsonFlag(resp, true);
        }catch (Exception e){
            e.printStackTrace();
//            如果执行catch块的信息，说明验证失败，为controller抛出了异常
            String msg=e.getMessage();//msg是被抛上来的异常，把这个异常返回给前端
            Map<String,Object> map=new HashMap<>();
            map.put("success", false);
            map.put("msg", msg);
//            调用方法返回的是map的json串给前端
            PrintJson.printJsonObj(resp, map);
        }
    }
}
